AI observability
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
GET | |
GET | |
POST | |
GET | |
PATCH | |
POST | |
POST | |
GET | |
GET | |
POST | |
GET | |
PATCH | |
POST | |
POST | |
GET | |
GET | |
POST | |
GET | |
POST | |
POST |
List all llm analytics personal spend
Return a structured personal LLM spend analysis for the requesting user. Pass date_from / date_to (absolute like 2026-04-23 or relative like -7d) to bound the window — defaults to the last 30 days, max 90 days. The product=<ai_product> query param is required and scopes the tool / model / day / trace breakdowns to a single product; supported values: posthog_code. by_product is always returned for cross-product visibility. by_day returns a day-ascending spend series for the scoped product. Pass bucket_minutes (5, 15, 30, or 60; the window may span at most 600 buckets) to additionally get by_bucket, a time-ascending series with per-bucket cost split into uncached input / output / cache read / cache creation components. Use refresh=true to bypass the 5-minute response cache.
Required API key scopes
user:readQuery parameters
- bucket_minutesintegerOne of:
"5""15""30""60" - date_fromstringDefault:
-30d - date_tostring | null
- limitintegerDefault:
50 - productstring
- refreshbooleanDefault:
false
Example request
GET /api /llm_analytics /@me /spendExample response
Status 200
Status 400
Status 401
Status 403
Status 404
Status 429
List all dataset items
List a dataset's current items or its exact contents at a prior revision.
Required API key scopes
dataset:readQuery parameters
- archivedbooleanDefault:
false - datasetstring
- limitinteger
- offsetinteger
- revisioninteger
Response
Example request
GET /api /projects /:project_id /dataset_itemsExample response
Status 200
Create dataset items
Create an item and its first immutable version. An identical client item ID retry returns the existing item. A different payload or an archived match returns a conflict.
Required API key scopes
dataset:writeRequest parameters
- datasetstring
- client_item_idstring | null
- input
- expected_output
- source_output
- metadataobject
- source_trace_idstring | null
- source_event_idstring | null
- source_timestampstring | null
Response
Example request
POST /api /projects /:project_id /dataset_itemsExample response
Status 200
Status 201
Status 409
Retrieve dataset items
Retrieve the current item version or the version visible at an exact dataset revision.
Required API key scopes
dataset:readPath parameters
- dataset_item_idstring
Query parameters
- revisioninteger
Response
Example request
GET /api /projects /:project_id /dataset_items /:dataset_item_idExample response
Status 200
Update dataset items
Create a new immutable item version from editable fields.
Required API key scopes
dataset:writePath parameters
- dataset_item_idstring
Response
Example request
Example response
Status 200
Status 409
Create dataset items
Archive an active item by creating a new immutable version.
Required API key scopes
dataset:writePath parameters
- dataset_item_idstring
Request parameters
- base_versioninteger
Response
Example request
POST /api /projects /:project_id /dataset_items /:dataset_item_id /archiveExample response
Status 200
Status 409
Create dataset items
Restore an archived item by copying content into a new immutable version.
Required API key scopes
dataset:writePath parameters
- dataset_item_idstring
Request parameters
- base_versioninteger
- source_versioninteger | null
Response
Example request
POST /api /projects /:project_id /dataset_items /:dataset_item_id /restoreExample response
Status 200
Status 409
List all dataset items versions
List every immutable version of an item, newest first.
Required API key scopes
dataset:readPath parameters
- dataset_item_idstring
Query parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /dataset_items /:dataset_item_id /versionsExample response
Status 200
List all datasets
List active datasets by default, or archived datasets when requested.
Required API key scopes
dataset:readQuery parameters
- archivedbooleanDefault:
false - id__inarray
- limitinteger
- offsetinteger
- order_bystringDefault:
-created_atOne of:"created_at""-created_at""updated_at""-updated_at" - searchstring
- tag_matchstringDefault:
anyOne of:"any""all" - tagsstring
Response
Example request
GET /api /projects /:project_id /datasetsExample response
Status 200
Create datasets
Create an empty dataset. Its first revision is created with its first item.
Required API key scopes
dataset:writeRequest parameters
- tagsarray
- namestring
- descriptionstringDefault:
- metadataobject
Response
Example request
POST /api /projects /:project_id /datasetsExample response
Status 201
Status 409
Retrieve datasets
Retrieve an active or archived dataset.
Required API key scopes
dataset:readPath parameters
- idstring
Response
Example request
GET /api /projects /:project_id /datasets /:idExample response
Status 200
Update datasets
Update descriptive dataset fields without changing its revision.
Required API key scopes
dataset:writePath parameters
- idstring
Request parameters
- tagsarray
- namestring
- descriptionstring
- metadataobject
Response
Example request
PATCH /api /projects /:project_id /datasets /:idExample response
Status 200
Status 409
Create datasets
Archive a dataset. Archived datasets remain readable and reject item mutations.
Required API key scopes
dataset:writePath parameters
- idstring
Response
Example request
POST /api /projects /:project_id /datasets /:id /archiveExample response
Status 200
Create datasets exports
Create an asynchronous JSONL export pinned to an immutable dataset revision.
Required API key scopes
dataset:readPath parameters
- idstring
Request parameters
- revisioninteger
Response
Example request
POST /api /projects /:project_id /datasets /:id /exportsExample response
Status 201
Status 409
Retrieve datasets exports
Check the status of a dataset export created by the current user.
Required API key scopes
dataset:readPath parameters
- export_idstring
- idstring
Response
Example request
GET /api /projects /:project_id /datasets /:id /exports /:export_idExample response
Status 200
Retrieve datasets exports content
Download a completed dataset JSONL export.
Required API key scopes
dataset:readPath parameters
- export_idstring
- idstring
Example request
GET /api /projects /:project_id /datasets /:id /exports /:export_id /contentExample response
Status 200
Status 409
Create datasets
Restore an archived dataset without changing its item states.
Required API key scopes
dataset:writePath parameters
- idstring
Response
Example request
POST /api /projects /:project_id /datasets /:id /restoreExample response
Status 200
List all datasets revisions
List immutable dataset revisions, newest first.
Required API key scopes
dataset:readPath parameters
- idstring
Query parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /datasets /:id /revisionsExample response
Status 200
Create llm analytics summarization
Generate an AI-powered summary of an LLM trace or event.
This endpoint analyzes the provided trace/event, generates a line-numbered text representation, and uses an LLM to create a concise summary with line references.
Two ways to use this endpoint:
- By ID (recommended): Pass
trace_idorgeneration_idwith an optionaldate_from/date_to. The backend fetches the data automatically.summarize_typeis inferred. - By data: Pass the full trace/event data blob in
datawithsummarize_type. This is how the frontend uses it.
Summary Format:
- Title (concise, max 10 words)
- Mermaid flow diagram showing the main flow
- 3-10 summary bullets with line references
- "Interesting Notes" section for failures, successes, or unusual patterns
- Line references in [L45] or [L45-52] format pointing to relevant sections
The response includes the structured summary, the text representation, and metadata.
Required API key scopes
llm_analytics:writeRequest parameters
- summarize_type
- modeDefault:
minimal - data
- force_refreshbooleanDefault:
false - compact_contextbooleanDefault:
false - modelstring | null
- trace_idstring
- generation_idstring
- date_fromstring | null
- date_tostring | null
Response
Example request
POST /api /projects /:project_id /llm_analytics /summarizationExample response
Status 200
Status 400
Status 403
Status 500
Create llm analytics summarization batch check
Check which traces have cached summaries available.
This endpoint allows batch checking of multiple trace IDs to see which ones have cached summaries. Returns only the traces that have cached summaries with their titles.
Use Cases:
- Load cached summaries on session view load
- Avoid unnecessary LLM calls for already-summarized traces
- Display summary previews without generating new summaries
Required API key scopes
llm_analytics:readRequest parameters
- trace_idsarray
- modeDefault:
minimal - modelstring | null
Response
Example request
POST /api /projects /:project_id /llm_analytics /summarization /batch_check










